import threading
import time
import uiautomator2 as u2
import schedule

"延时器使用"
f = False


def main():
    def main01():
        global d
        # 链接设备
        d = u2.connect("192.168.0.101")
        # 默认 解锁屏幕
        if not d.info["screenOn"]:
            d.screen_on()
            d.swipe_ext("up")
        # 返回主界面
        time.sleep(1)
        d.press("home")
        time.sleep(1)
        d.press("home")
        time.sleep(1)

    # main里面默认开启屏幕,实际自己修改
    try:
        main01()
    except:
        # 链接会超时,需要第二次加载
        time.sleep(10)
        main01()


# 测试
def open_atx():
    d.swipe_ext("left", scale=0.9)
    d.xpath("ATX").click()


def open_test01():
    d.xpath("设置").click()
    time.sleep(3)
    # d.open_url("https://www.baidu.com")
    d.xpath("//*[contains(@text, '显示与')]").click()
    time.sleep(3)
    # 高级运用
    print(d.xpath("//*[contains(@text, '自动')]").info)
    d(text=d.xpath("//*[contains(@text, '自动')]").info['text']).right(className="android.widget.Switch").click()
    time.sleep(3)
    d.press("back")
    # 一般使用 查找指定用text用d,child_by_text会自动滑动
    d(className="android.widget.ListView", resourceId="android:id/list") \
        .child_by_text("电池", className="android.widget.LinearLayout") \
        .click()


def timer(t):
    # t1 = threading.Thread(target=schedule01, args=("延时器启动",))
    # t1.start()
    # t1.join()

    def f01():
        # global 存在：单纯使用全局变量，能跨文件使用，不存在：只能当前文件使用
        global f
        f = True
        # print(True)

    def schedule01():
        """
        语法与逻辑的高级使用，不建议修改
            schedule.every(10).seconds.do(job)  # 每10秒执行一次
            schedule.every(10).minutes.do(job)  # 每10分钟执行一次
            schedule.every().hour.do(job)  # 每小时执行一次
            schedule.every().day.at("10:30").do(job)  # 每天十点半执行
            schedule.every(5).to(10).minutes.do(job)  # 每5-10分钟随机执行一次
            schedule.every().monday.do(job)  # 每周一执行
            schedule.every().wednesday.at("13:15").do(job)  # 每周三13点15执行
            schedule.every().minute.at(":17").do(job)  # 每个小时的17分执行一次"""
        # 正常逻辑
        localtime = time.asctime(time.localtime(time.time()))
        print("延时器开始时间:", localtime)
        # schedule.every(10).seconds.do(job)  # 每10秒执行一次
        # schedule.every(10).minutes.do(job)  # 每10分钟执行一次
        # schedule.every().hour.do(job)  # 每小时执行一次
        # schedule.every().day.at("13:19").do(f01)  # 每天"12:53"执行
        # schedule.every(5).to(10).minutes.do(job)  # 每5-10分钟随机执行一次
        # schedule.every().monday.do(job)  # 每周一执行
        while True:
            schedule.run_pending()  # 运行所有可运行的任务
            if f:
                localtime = time.asctime(time.localtime(time.time()))
                print("延时器退出时间:", localtime)
                break
            time.sleep(1)

    def schedule001():
        # schedule.every(10).seconds.do(job)  # 每10秒执行一次
        # schedule.every(10).minutes.do(job)  # 每10分钟执行一次
        # schedule.every().hour.do(job)  # 每小时执行一次
        # schedule.every().day.at("13:37").do(f01)  # 每天"12:53"执行
        # schedule.every(5).to(10).minutes.do(job)  # 每5-10分钟随机执行一次
        # schedule.every().monday.do(job)  # 每周一执行
        schedule.every().day.at(t).do(f01)
        schedule01()

    schedule001()


def run():
    # 延时执行
    # timer("14:03")
    # 默认
    main()
    # 测试
    # open_atx()
    open_test01()


run()


def test01(d01):
    # 分析测试
    for elem in d01:
        # for elem in d01.xpath("//*").all():
        print("Text:", elem.text)
        # Dictionary eg:
        # {'index': '1', 'text': '999+', 'resource-id': 'com.netease.cloudmusic:id/qb', 'package': 'com.netease.cloudmusic', 'content-desc': '', 'checkable': 'false', 'checked': 'false', 'clickable': 'false', 'enabled': 'true', 'focusable': 'false', 'focused': 'false','scrollable': 'false', 'long-clickable': 'false', 'password': 'false', 'selected': 'false', 'visible-to-user': 'true', 'bounds': '[661,1444][718,1478]'}
        # print("Attrib:", elem.attrib)
        # Coordinate eg: (100, 200)
        # print("Position:", elem.center())